home *** CD-ROM | disk | FTP | other *** search
-
- ;********************************************************************
- ;
- ; (c) Mik of ClassX 1995
- ;
- ;
- ; Simple XFA -> Iff converter (may also be a simple disk player)
- ;
- ;
- ;********************************************************************
-
- XINCLUDE "LIB_XFA.BB"
-
- WBStartup
- NoCli
-
-
- DEFTYPE.l
- DEFTYPE.XFA_Head *hd
- DEFTYPE.Mem mem
- DEFTYPE.IFFHandle *iff
- DEFTYPE.BitMap *bm0,*bm1
- DEFTYPE.Screen *sc0,*sc1
- DEFTYPE.w mode
- DEFTYPE.l cnt
-
-
- ;/* xfa file to convert */
- f$ = "df0:X32I.xfa"
-
- ;/* open the file for reading */
- *iff = XFA_OpenRead_(f$,0,0)
-
- If *iff
-
- ;/* open the screen buffer to unpack frames */
- ;/* only 1 bitmap required for XFA_MODEI animations */
- *hd = XFA_HeadPtr_
- mode = XFA_GetPackMode_ & #XFA_MODEI
-
- Screen 0,0,0,*hd\BytesPerRow*8,*hd\Rows,*hd\Depth,*hd\ModeID,"",2,1
- ScreensBitMap 0,0
- Cls 0
- *sc0 = Peek.l(Addr Screen (0))
- *bm0 = Addr BitMap (0)
- XFA_UseCMap_ *sc0,0
-
- ;/* open another buffer for no lace cunning anims */
- If mode = 0
- Screen 1,0,0,*hd\BytesPerRow*8,*hd\Rows,*hd\Depth,*hd\ModeID,"",2,1
- ScreensBitMap 1,1
- Cls 0
- *sc1 = Peek.l(Addr Screen (1))
- *bm1 = Addr BitMap (1)
- XFA_UseCMap_ *sc1,0
- EndIf
-
- cnt = 0
- Format "00000"
-
- ;/* while not eof, create the frames */
- While XFA_ReadFrame_(*iff,&mem)=0
- ;/* first field */
- XFA_UnPackBitMap_ *bm0,mem\Ptr
- XFA_FreeFrame_ &mem
-
- ;/* second field on the same bitmap for XFA_MODEI */
- If mode
- If XFA_ReadFrame_(*iff,&mem)=0
- XFA_UnPackBitMap_ *bm0,mem\Ptr
- XFA_FreeFrame_ &mem
- EndIf
- EndIf
-
- ;;/* put here the code to save every single frame */
- XFA_SaveScreen_ *sc0,"t:frame"+Str$(cnt)
- ;;
- If mode=0
- Exchange *sc0,*sc1
- Exchange *bm0,*bm1
- EndIf
-
- cnt+1
- Wend
-
- ;/* done with the file /*
- XFA_CloseRead_ *iff
-
- EndIf
-
- End
-
-
-
- ;Note: this code saves also the last LOOP/BLANK frames.
- ;******************************************************
-
-